package cn.biplam.common.bean.md;

import java.io.Serializable;

import cn.biplam.common.bean.Bean;
import cn.biplam.common.client.DataFilter;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.UserInfo;
import cn.biplam.common.wrapper.sqlresult.SqlResult;

/**
 * 单个外键关系的所有字段关系操作
 */
public abstract class MdFkRelationTableColAll extends Bean implements Serializable{
	
	/**对象集合信息 */
	protected SqlResult sr;
	/**列关系id */
	protected String re_id;
	/**Md对象类型 */
	protected String modelType;
	/**用户信息 */
	protected UserInfo mUser;
	/**结果集游标信息 */
	protected int icount=-1;

	/**列关系id 字段名*/
	protected String CREID;
	/** 关系id 字段名 */
	protected String REID;
	/** 主表列id 字段名 */
	protected String Main_Table_Column_ID;
	/** 外键表列id 字段名 */
	protected String Foreign_Table_Column_ID;
	/**
	 * 取外键关联表关联id
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getReId() throws ErrorMessage;

	/**
	 * 列外键关联中 主表列id
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getMainTableColId() throws ErrorMessage;
	
	/**
	 * 列外键关联中 主表列
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getMainTableCol() throws ErrorMessage;


	/**
	 * 列外键关联中 外键表列id
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getForeingTableColId() throws ErrorMessage;
	
	/**
	 * 列外键关联中 外键表列
	 * @return
	 * @throws ErrorMessage
	 */
	public abstract String getForeingTableCol() throws ErrorMessage;

	/**
	 * 更新记录集
	 * @param filter 过滤器
	 * @throws ErrorMessage
	 */
	public abstract void update(DataFilter filter) throws ErrorMessage;

	/**
	 * 插入记录集
	 * @param filter 过滤器
	 * @throws ErrorMessage
	 */
	public abstract String insert(DataFilter filter) throws ErrorMessage;

	/**
	 * 是否还有对象
	 * @return
	 */
	public abstract boolean haveNext();

	/**
	 * 移动指针到下一个
	 */
	public abstract void next();

	/**
	 * 判断对象信息是否存在
	 * @return
	 */
	public abstract boolean exist();
	
	/**
	 * 新建实例
	 * @param classParams 类参数
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdFkRelationTableColAll getNewInstance(Object... classParams) throws ErrorMessage{
		return (MdFkRelationTableColAll)get(MdFkRelationTableColAll.class.getSimpleName(), classParams);
	}
	
	/**
	 * 新建实例
	 * @param mUser     用户信息
	 * @param re_id     关系ID
	 * @param modelType 模型类型
	 * @return 实例
	 * @throws ErrorMessage
	 */
	public static MdFkRelationTableColAll getNewInstance(UserInfo mUser,
			String re_id,String modelType) throws ErrorMessage{
		return (MdFkRelationTableColAll)get(MdFkRelationTableColAll.class.getSimpleName(),
				mUser, re_id, modelType);
	}
	
	/**列关系id 字段名*/
	public abstract String getCREID() ;
	
	/** 关系id 字段名 */
	public abstract String getREID();
	
	/** 主表列id 字段名 */
	public abstract String getMain_Table_Column_ID();
	
	/** 外键表列id 字段名 */
	public abstract String getForeign_Table_Column_ID();

}